package com.s7.utils.map;

import android.content.Intent;
import android.net.Uri;

public class NavigationHelper {

    /**
     * 百度导航
     * @param latLng 目的地经纬度
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(SLatLng latLng, String packageName) {
        return onBaidu("riding", latLng, packageName);
    }

    /**
     * 百度导航
     * @param mode 导航方式
     * @param latLng 目的地经纬度
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(String mode, SLatLng latLng, String packageName) {
        StringBuffer location = new StringBuffer("baidumap://map/direction?destination=")
                .append(latLng.getLat()).append(",").append(latLng.getLng())
                .append("&mode=").append(mode)
                .append("&coord_type").append("bd09ll")
                .append("&src=").append(packageName);
        Intent intent = new Intent();
        intent.setData(Uri.parse(String.valueOf(location)));
        return intent;
    }

    /**
     * 百度导航
     * @param address 目的地址
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(String address, String packageName) {
        return onBaidu("riding", address, packageName);
    }


    /**
     * 百度导航
     * @param mode 导航方式
     * @param address 目的地址
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(String mode, String address, String packageName) {
        StringBuffer location = new StringBuffer("baidumap://map/direction?destination=")
                .append(address)
                .append("&mode=").append(mode)
                .append("&coord_type").append("bd09ll")
                .append("&src=").append(packageName);
        Intent intent = new Intent();
        intent.setData(Uri.parse(String.valueOf(location)));
        return intent;
    }

    /**
     * 百度导航
     * @param latLng 目的地经纬度
     * @param address 目的地址
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(SLatLng latLng, String address, String packageName) {
        return onBaidu("riding", "终点", latLng, address, packageName);
    }

    /**
     * 百度导航
     * @param mode 导航方式
     * @param latLng 目的地经纬度
     * @param address 目的地址
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(String mode, SLatLng latLng, String address, String packageName) {
        return onBaidu(mode, "终点", latLng, address, packageName);
    }

    /**
     * 百度导航
     * @param name 目的地名
     * @param latLng 目的地经纬度
     * @param address 目的地址
     * @param packageName 来源
     * @return
     */
    public static Intent onBaidu(String mode, String name, SLatLng latLng, String address, String packageName) {
        StringBuffer location = new StringBuffer("baidumap://map/direction?destination=")
                .append("name:") .append(name)
                .append("|latlng:") .append(latLng.getLat()).append(",").append(latLng.getLng())
                .append("addr") .append(address)
                .append("&mode=").append(mode)
                .append("&coord_type").append("bd09ll")
                .append("&src=").append(packageName);
        Intent intent = new Intent();
        intent.setData(Uri.parse(String.valueOf(location)));
        return intent;
    }

    /**
     * 高德导航
     * @param latLng 目的地经纬度
     * @return
     */
    public static Intent onGaode(SLatLng latLng) {
        return onGaode("终点", latLng);
    }

    /**
     * 高德导航
     * @param style 导航方式
     * @param latLng 目的地经纬度
     * @return
     */
    public static Intent onGaode(int style, SLatLng latLng) {
        return onGaode(style, "终点", latLng);
    }

    /**
     * 高德导航
     * @param name 目的地名
     * @param latLng 目的地经纬度
     * @return
     */
    public static Intent onGaode(String name, SLatLng latLng) {
        return onGaode(2, name, latLng);
    }

    /**
     * 高德导航
     * @param style 导航方式
     * @param name 目的地名
     * @param latLng 目的地经纬度
     * @return
     */
    public static Intent onGaode(int style, String name, SLatLng latLng) {
        StringBuffer location = new StringBuffer("androidamap://navi?sourceApplication=")
                .append("amap")
                .append("&lat=").append(latLng.getLat()) // 目的地lat
                .append("&lon=").append(latLng.getLng())  // 目的地lng
                .append("&dname=").append(name)  // 目的地名称
                .append("&dev=").append(0)
                .append("&t=").append(3)
                .append("&style=").append(style); // 导航方式
        return new Intent("android.intent.action.VIEW", Uri.parse(String.valueOf(location)));
    }

    /**
     * 高德导航
     * @param name
     * @param latLng
     * @return
     */
    public static Intent onGaode2(String name, SLatLng latLng) {
        return onGaode2(2, name, latLng);
    }

    /**
     * 高德导航
     * @param style
     * @param name
     * @param latLng
     * @return
     */
    public static Intent onGaode2(int style, String name, SLatLng latLng) {
        StringBuffer location = new StringBuffer("amapuri://route/plan/?")
                .append("&dlat=").append(latLng.getLat()) // 目的地lat
                .append("&dlon=").append(latLng.getLng())  // 目的地lng
                .append("&dname=").append(name)  // 目的地名称
                .append("&dev=").append(0)
                .append("&t=").append(3)
                .append("&style=").append(style); // 导航方式
        return new Intent("android.intent.action.VIEW", Uri.parse(String.valueOf(location)));
    }

}
